Obs: é preciso ter executado os comandos !pip install basedosdados e !pip install plotly antes de rodar células abaixo
import basedosdados as bd
import numpy as np
import pandas as pd
import plotly
import plotly.express as px
import plotly.offline as py
import plotly.graph_objs as go
import json
with open('estados.json', encoding="utf8") as geojson:
estados = json.load(geojson)
Para pegar as informações relevantes, selecionamos só os governantes de UFs que têm dados sobre sua cobertura de mata amazônia na basedosdados
A consulta em si está na pasta de consultas SQL com o nome 'GovernoEstado.sql'
Aqui importamos o csv gerado pela consulta descrita acima
csvGov= pd.read_csv('ConsultasEmCsv/governosestados.csv')
csvGov.head(10)
| anos | sigla_uf | sigla_partido | |
|---|---|---|---|
| 0 | 1994 | AC | PPR |
| 1 | 1998 | AC | PT |
| 2 | 2002 | AC | PT |
| 3 | 2006 | AC | PT |
| 4 | 2010 | AC | PT |
| 5 | 2014 | AC | PT |
| 6 | 2018 | AC | PP |
| 7 | 1994 | AM | PPR |
| 8 | 1998 | AM | PFL |
| 9 | 2002 | AM | PPS |
Pegamos as informações da área do bioma Amazônia relacionada ao estado e ao ano em que foram registradas
A consulta em si está na pasta de consultas SQL com o nome 'AreaTotAmazonia.sql'
Aqui importamos o csv gerado pela consulta descrita acima
csvCob= pd.read_csv('ConsultasEmCsv/coberturaanoestado.csv')
csvCob.head(10)
| ano | estado_abrev | areatotal | |
|---|---|---|---|
| 0 | 1985 | AC | 158629.949213 |
| 1 | 1986 | AC | 158481.673831 |
| 2 | 1987 | AC | 158058.639895 |
| 3 | 1988 | AC | 157346.219951 |
| 4 | 1989 | AC | 156778.336434 |
| 5 | 1990 | AC | 156485.547716 |
| 6 | 1991 | AC | 155840.069900 |
| 7 | 1992 | AC | 155721.231168 |
| 8 | 1993 | AC | 154725.256883 |
| 9 | 1994 | AC | 154742.431297 |
Vamos relacionar as duas tabelas para obter o dataset o qual utilizaremos para operações e análises no pandas, com o objetivo de responder o questionamento acima.
Com as duas tabelas acima, fazemos um inner join nos parametros anos e estados para relacionar as mudanças dos biomas com o partido governante
csvCob = csvCob.rename(columns = {'estado_abrev' : 'sigla_uf', 'anos' : 'ano' })
csvGov = csvGov.rename(columns = {'anos' : 'ano'})
#fazemos o join entre os dataframes de interesse
lig = csvCob.merge(csvGov, how = 'inner', on= ['ano', 'sigla_uf'])
lig.head()
| ano | sigla_uf | areatotal | sigla_partido | |
|---|---|---|---|---|
| 0 | 1994 | AC | 154742.431297 | PPR |
| 1 | 1998 | AC | 152234.087485 | PT |
| 2 | 2002 | AC | 148017.291313 | PT |
| 3 | 2006 | AC | 147719.725350 | PT |
| 4 | 2010 | AC | 146517.504490 | PT |
#Usando o pandas, adicionando uma coluna inicialmente vazia
lig["delta"] = None
lig.head(15)
| ano | sigla_uf | areatotal | sigla_partido | delta | |
|---|---|---|---|---|---|
| 0 | 1994 | AC | 1.547424e+05 | PPR | None |
| 1 | 1998 | AC | 1.522341e+05 | PT | None |
| 2 | 2002 | AC | 1.480173e+05 | PT | None |
| 3 | 2006 | AC | 1.477197e+05 | PT | None |
| 4 | 2010 | AC | 1.465175e+05 | PT | None |
| 5 | 2014 | AC | 1.456493e+05 | PT | None |
| 6 | 2018 | AC | 1.441178e+05 | PP | None |
| 7 | 1994 | AM | 1.505151e+06 | PPR | None |
| 8 | 1998 | AM | 1.503607e+06 | PFL | None |
| 9 | 2002 | AM | 1.503723e+06 | PPS | None |
| 10 | 2006 | AM | 1.497690e+06 | PMDB | None |
| 11 | 2010 | AM | 1.496009e+06 | PMN | None |
| 12 | 2014 | AM | 1.492836e+06 | PROS | None |
| 13 | 2018 | AM | 1.488467e+06 | PSC | None |
| 14 | 1994 | AP | 1.368060e+05 | PSB | None |
Nessa função, percorremos as linhas do database e pegamos a informação da área antes e após o mandato, para armazenar a porcentagem de quanto mudou na coluna delta e armazenar a perda total de área na nova coluna perdatot
lig["delta"] = None
lig["perdatot"]= None
for index in lig.index:
line = lig.iloc[index]
ano = line.ano
est = line.sigla_uf
areaantiga = line.areatotal
areaatual = lig[(lig.sigla_uf==est) & (lig.ano == ano + 4)].areatotal
if len(areaatual) == 0:
areaatual= None
else:
areaatual= areaatual.iloc[0]
lig.loc[index,'delta'] = (-1)*((areaatual - areaantiga)/ areaantiga)*100
lig.loc[index, 'perdatot'] = areaantiga - areaatual
#variável 'deltadb' agora armazena os deltas de áreas
deltadb = lig
#removemos linhas em que nao temos informações do desmatamento
deltadb = deltadb.dropna()
Abaixo temos o dataframe mais importante para esta análise até agora:
deltadb.head()
| ano | sigla_uf | areatotal | sigla_partido | delta | perdatot | governo_ano | |
|---|---|---|---|---|---|---|---|
| 0 | 1994 | AC | 154742.431297 | PPR | 1.62098 | 2508.343812 | (PPR)1994-1998 |
| 1 | 1998 | AC | 152234.087485 | PT | 2.769942 | 4216.796173 | (PT)1998-2002 |
| 2 | 2002 | AC | 148017.291313 | PT | 0.201035 | 297.565963 | (PT)2002-2006 |
| 3 | 2006 | AC | 147719.725350 | PT | 0.813853 | 1202.22086 | (PT)2006-2010 |
| 4 | 2010 | AC | 146517.504490 | PT | 0.592542 | 868.178236 | (PT)2010-2014 |
Com a porcentagem da área perdida relacionada com o partido que estava no mandato, podemos fazer cálculos para comparar quem foi mais permissivo em relação à perda da biodiversidade
#Vamos usar as duas colunas, a que indica o partido que governou, e o saldo do mandato em relação a área do bioma
ptbioma= deltadb[['sigla_partido','delta','perdatot'] ]
ptbioma.head(10)
| sigla_partido | delta | perdatot | |
|---|---|---|---|
| 0 | PPR | 1.62098 | 2508.343812 |
| 1 | PT | 2.769942 | 4216.796173 |
| 2 | PT | 0.201035 | 297.565963 |
| 3 | PT | 0.813853 | 1202.22086 |
| 4 | PT | 0.592542 | 868.178236 |
| 5 | PT | 1.051536 | 1531.555535 |
| 7 | PPR | 0.102529 | 1543.20929 |
| 8 | PFL | -0.007702 | -115.813629 |
| 9 | PPS | 0.401206 | 6033.033481 |
| 10 | PMDB | 0.112286 | 1681.694831 |
Somando porcentagens por partido:
a= ptbioma.groupby('sigla_partido').delta.sum()
Contando instâncias de partidos para fazer a média
b = ptbioma.groupby('sigla_partido').sigla_partido.count()
Pegando series dos partidos
pts = pd.unique(ptbioma ['sigla_partido'])
pts = pd.Series(pts)
Pegando a média da perda por mandato, organizando por partidos
mediapercentpart = a/b
s = mediapercentpart.sort_values(ascending=True)
mptd = pd.DataFrame({'sigla_partido':s.index, 'média_por_mandato': s.values})
mptd
| sigla_partido | média_por_mandato | |
|---|---|---|
| 0 | PSB | 0.042159 |
| 1 | PSL | 0.142464 |
| 2 | PMN | 0.212082 |
| 3 | PROS | 0.292676 |
| 4 | PTB | 0.453156 |
| 5 | PPB | 0.822836 |
| 6 | PP | 0.902800 |
| 7 | PDT | 1.096243 |
| 8 | PT | 1.156398 |
| 9 | PSDB | 1.282231 |
| 10 | PMDB | 2.042366 |
| 11 | PC do B | 2.601661 |
| 12 | PPS | 3.279318 |
| 13 | PFL | 4.571913 |
| 14 | PPR | 6.260845 |
fig = px.bar(mptd, y='média_por_mandato', x='sigla_partido' ,title='Porcentagem de perda do bioma da amazônia por mandato')
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
fig.show()
Obs: Essa é uma análise mais por curiosidade, pois não é boa para comparar os partidos, já que um partido pode ter muito mais mandatos que outros. Porém também faremos a média para ter o dado comparativo.
Somando perda de áreas relacionadas ao partido:
ap= ptbioma.groupby('sigla_partido').perdatot.sum()
ap = ap.sort_values(ascending = True)
dfap = pd.DataFrame({'sigla_partido':ap.index, 'total_por_partido': ap.values})
dfap.tail(5)
| sigla_partido | total_por_partido | |
|---|---|---|
| 10 | PMDB | 12486.940678 |
| 11 | PT | 23530.903038 |
| 12 | PFL | 24712.721232 |
| 13 | PPS | 50546.465928 |
| 14 | PSDB | 116128.834019 |
fig = px.bar(dfap, y='total_por_partido', x='sigla_partido' ,title='Perda total do bioma por partido (somando mandatos)')
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
fig.show()
Vemos que o PSDB tem uma área total perdida da amazônia bem desproporcional aos outros partidos.
Agora a análise é comparativa e útil para fins de comparação
#vamos utilizar as variáveis b e ap que guardam o count() e a áreatotal dos partidos, respectivamente
#abaixo dividimos a area total pelo partido:
med= ap/b
med = med.sort_values(ascending=True)
medtd = pd.DataFrame({'sigla_partido':med.index, 'média_area_total_por_mandato': med.values})
medtd.tail(5)
| sigla_partido | média_area_total_por_mandato | |
|---|---|---|
| 10 | PFL | 3530.388747 |
| 11 | PT | 3921.817173 |
| 12 | PROS | 4369.168423 |
| 13 | PPS | 12636.616482 |
| 14 | PSDB | 12903.203780 |
Gráfico:
fig = px.bar(medtd, y='média_area_total_por_mandato', x='sigla_partido' ,title='Média da perda total por mandato')
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
fig.show()
O PPS e o PSDB são partidos que não tem políticas eficientes de preservação da biodiversidade brasileira, eles destoam em comparação à outros partidos, segundo esses dados.
Queremos a perda total no espaço amostral de tempo por cada estado, vamos selecionar o que teve mais área perdida comparativamente para visualizar , posteriormente, os dados de como foram a sequencia de mandatos, e em qual mandato mais teve perda
perdaestado= deltadb.groupby('sigla_uf').perdatot.sum()
perdarelativaestado= deltadb.groupby('sigla_uf').delta.sum()
Temos a informação da soma das perdas, mas ainda precisamos normalizar o dado, já que a cobertura de tempo de diferentes estados também é diferente
countestado=deltadb.groupby('sigla_uf').sigla_uf.count()
Calculamos as perdas relativas e quantitativas:
## Perda total, para comparar quantitativamente
pestcpt= perdaestado/countestado
pestcpt = pestcpt.sort_values(ascending=False)
## Perda percentual, para comparar percentualmente
pestrel= perdarelativaestado/countestado
pestrel = pestrel.sort_values(ascending=False)
Transformando séries acima em dataframe
#perda quantitativa
dfa =pestcpt.reset_index()
dfa.columns = ['sigla_uf', 'perda']
dfa
| sigla_uf | perda | |
|---|---|---|
| 0 | PA | 18446.532540 |
| 1 | MT | 16426.500100 |
| 2 | RO | 7041.456408 |
| 3 | MA | 3430.417974 |
| 4 | AM | 2780.677268 |
| 5 | AC | 1770.776763 |
| 6 | RR | 1080.794463 |
| 7 | TO | 320.613967 |
| 8 | AP | 88.354228 |
#perda relativa
dfb =pestrel.reset_index()
dfb.columns = ['sigla_uf', 'perda']
dfb
| sigla_uf | perda | |
|---|---|---|
| 0 | MA | 5.146821 |
| 1 | MT | 4.209027 |
| 2 | RO | 4.144400 |
| 3 | TO | 2.966543 |
| 4 | PA | 1.764645 |
| 5 | AC | 1.174981 |
| 6 | RR | 0.500949 |
| 7 | AM | 0.185513 |
| 8 | AP | 0.064529 |
Vemos que quantitativamente, as unidades federais que mais perderam áreas amazônicas: Pará, Mato Grosso e Rondônia.
Também vemos que comparativamente, as unidades federais que mais perderam áreas amazônicas: Maranhão, Mato Grosso e Rondônia
dfp =pestcpt.reset_index()
dfp.columns = ['sigla_uf', 'perda']
fig = px.choropleth_mapbox(dfp,
geojson=estados, locations='sigla_uf', color='perda',
featureidkey="properties.sigla",
color_continuous_scale="Viridis",
mapbox_style="carto-positron",
center = {"lon": -60.0261, "lat": -3.10719 },
zoom = 3
)
fig.show()
Vemos que o Pará e o Mato Grosso sofreram em peso com a perda do bioma.
dfp =pestrel.reset_index()
dfp.columns = ['sigla_uf', 'perda']
fig = px.choropleth_mapbox(dfp,
geojson=estados, locations='sigla_uf', color='perda',
featureidkey="properties.sigla",
color_continuous_scale="Viridis",
mapbox_style="carto-positron",
center = {"lon": -60.0261, "lat": -3.10719 },
zoom = 3
)
fig.show()
Agora temos os mapas acima para observar o que aconteceu nos estados ao longo dos anos 90 ~ 20
Vemos acima que comparativamente, os 3 estados que mais sofreram foram MA, MT e RO, vamos nos aprofundar neles para ver o que aconteceu com cada um.
Abaixo, modelamos um novo data frame que esteja organizado por estado e ao longo dos anos tenha sua respectiva áreatotal. Modelamos desse formato para poder plotar em um gráfico de linhas.
col = pd.unique(deltadb["sigla_uf"])
cobvis=csvCob.query('ano >= 1994 and ano <= 2018 and (sigla_uf == "MA" or sigla_uf == "MT" or sigla_uf == "RO" )')
cobmavis = cobvis.query('sigla_uf == "MA"')
cobmtvis = cobvis.query('sigla_uf == "MT"')
cobrovis = cobvis.query('sigla_uf == "RO"')
newdf = pd.DataFrame(columns = col)
newdf["ano"]=pd.unique(cobvis["ano"])
newdf = newdf.merge(cobmavis,how = 'inner', on = 'ano').merge(cobmtvis,how= 'inner', on = 'ano').merge(cobrovis,how= 'inner', on = 'ano')
newdf = newdf[['ano','areatotal_x','areatotal_y', 'areatotal']]
newdf = newdf.rename(columns = {'areatotal_x': 'MA', 'areatotal_y': 'MT', 'areatotal' : 'RO'})
newdf.head()
| ano | MA | MT | RO | |
|---|---|---|---|---|
| 0 | 1994 | 75481.156639 | 433299.150186 | 195376.592716 |
| 1 | 1995 | 74272.545092 | 429766.345561 | 191833.580550 |
| 2 | 1996 | 72223.250740 | 422290.605462 | 188182.214708 |
| 3 | 1997 | 72837.223173 | 412144.718601 | 186252.888139 |
| 4 | 1998 | 71104.771291 | 409861.953011 | 183489.029383 |
Aqui usamos a biblioteca plotly para mostrar área total do bioma amazônico nos estados:
fig = px.line(newdf, x='ano', y=newdf.columns,
title='Área total(km²) do bioma amazônia nesses estados entre 1994 e 2018',
line_shape = 'spline')
fig.show()
Agora vamos fazer um mapa de calor com as perdas de áreas em relação ao tempo:
Como precisamos comparar os dados, vamos pegar só os anos em que todas possuem informações (1998 à 2010)
Pegando informações respectivas ao gráfico:
heat =deltadb.query(' (sigla_uf == "MA" or sigla_uf == "MT" or sigla_uf == "RO") and ano >=1998 and ano <= 2010')
heat.head()
| ano | sigla_uf | areatotal | sigla_partido | delta | perdatot | |
|---|---|---|---|---|---|---|
| 22 | 1998 | MA | 71104.771291 | PFL | 8.05166 | 5725.114204 |
| 23 | 2002 | MA | 65379.657086 | PFL | 7.14347 | 4670.376412 |
| 24 | 2006 | MA | 60709.280675 | PDT | 4.124277 | 2503.819022 |
| 25 | 2010 | MA | 58205.461653 | PMDB | 3.161876 | 1840.384696 |
| 28 | 1998 | MT | 409861.953011 | PSDB | 6.03587 | 24738.735802 |
Abaixo: modelando dataframe para mostrar um mapa de calor organizado
mahe = heat.query('sigla_uf == "MA"')
mahe = mahe [['delta']]
mahe = mahe.astype(int)
mthe = heat.query('sigla_uf == "MT"')
mthe = mthe [['delta']].astype(int)
rohe = heat.query('sigla_uf == "RO"')
rohe = rohe [['delta']].astype(int)
f = [mahe.delta.values,mthe.delta.values,rohe.delta.values]
f
[array([8, 7, 4, 3]), array([6, 8, 2, 0]), array([5, 7, 1, 2])]
Agora conseguimos plotar:
Obs: As porcentagens foram arredondadas pois esse plot só trabalha com inteiros
fig = px.imshow(f,
labels=dict(x="Ano", y="Estado", color="Perda de cobertura do bioma (%)"),
x=['1998->02', '2002->06', '2006->10', '2010->14'],
y=['MA', 'MT', 'RO']
)
fig.update_xaxes(side="top")
fig.show()
Selecionando dados referentes aos 3 estados que mais sofreram (MA, RO e MT) com a perda do bioma amazônia e adicionando os mandatos:
Abaixo adicionamos o governo em dado mandato no dataframe mais completo
rodb= deltadb
rodb["governo_ano"]= "("+ rodb["sigla_partido"] + ")"+rodb["ano"].astype(str) + "-" + ((rodb["ano"] + 4 ).astype(str))
rodb = rodb.rename(columns = {'perdatot' : 'perda_total', 'governo_ano' : 'governo_quadrienio'})
rodb.head()
| ano | sigla_uf | areatotal | sigla_partido | delta | perda_total | governo_quadrienio | |
|---|---|---|---|---|---|---|---|
| 0 | 1994 | AC | 154742.431297 | PPR | 1.62098 | 2508.343812 | (PPR)1994-1998 |
| 1 | 1998 | AC | 152234.087485 | PT | 2.769942 | 4216.796173 | (PT)1998-2002 |
| 2 | 2002 | AC | 148017.291313 | PT | 0.201035 | 297.565963 | (PT)2002-2006 |
| 3 | 2006 | AC | 147719.725350 | PT | 0.813853 | 1202.22086 | (PT)2006-2010 |
| 4 | 2010 | AC | 146517.504490 | PT | 0.592542 | 868.178236 | (PT)2010-2014 |
Abaixo queremos ver as informações do estado do Mato Grosso
mtdb= rodb.query('sigla_uf == "MT"')
mtdb = mtdb[['governo_quadrienio','perda_total']]
mtdb
| governo_quadrienio | perda_total | |
|---|---|---|
| 28 | (PSDB)1998-2002 | 24738.735802 |
| 29 | (PPS)2002-2006 | 34346.750475 |
| 30 | (PPS)2006-2010 | 7507.266226 |
| 31 | (PMDB)2010-2014 | -886.752105 |
Gráfico:
fig = px.bar(mtdb, x="governo_quadrienio", y="perda_total", title="Perda de cobertura do bioma em km² por mandato no Mato Grosso")
fig.show()
Obs: perda negativa quer dizer que houve um reflorestamento (um ganho de área do bioma amazônia)
Concluímos que no estado do Mato Grosso, na cobertura de tempo de 1998 a 2014, o governo que mais permitiu a perda do bioma foi o do partido PPS (atual Cidadania).
Abaixo queremos ver as informações do estado do Maranhão
madb= rodb.query('sigla_uf == "MA"')
madb = madb[['governo_quadrienio','perda_total']]
madb
| governo_quadrienio | perda_total | |
|---|---|---|
| 21 | (PFL)1994-1998 | 4376.385349 |
| 22 | (PFL)1998-2002 | 5725.114204 |
| 23 | (PFL)2002-2006 | 4670.376412 |
| 24 | (PDT)2006-2010 | 2503.819022 |
| 25 | (PMDB)2010-2014 | 1840.384696 |
| 26 | (PC do B)2014-2018 | 1466.428162 |
Gráfico:
fig = px.bar(madb, x="governo_quadrienio", y="perda_total", title="Perda de cobertura do bioma em km² por mandato no Maranhão")
fig.show()
Concluímos que no estado do Maranhão, na cobertura de tempo de 1994 a 2018, o governo que mais permitiu a perda do bioma foi o do partido PFL.
Abaixo queremos ver as informações do estado de Rondônia
rondb= rodb.query('sigla_uf == "RO"')
rondb = rondb[['governo_quadrienio','perda_total']]
rondb
| governo_quadrienio | perda_total | |
|---|---|---|
| 39 | (PFL)1998-2002 | 9293.785503 |
| 40 | (PSDB)2002-2006 | 13747.831667 |
| 41 | (PPS)2006-2010 | 2659.415745 |
| 42 | (PMDB)2010-2014 | 3187.870788 |
| 43 | (PMDB)2014-2018 | 6318.378338 |
Gráfico:
fig = px.bar(rondb, x="governo_quadrienio", y="perda_total", title="Perda de cobertura do bioma em km² por mandato em Rondônia")
fig.show()
Concluímos que no estado de Rondônia, na cobertura de tempo de 1998 a 2018, o governo que mais permitiu a perda do bioma foi o do partido PSDB.
Vamos importar mais uma consulta em SQL, referente à area coberta por lavouras em cada estado ao longo dos anos.
Queremos ver a relação da perda do bioma nos estados com como a agropecuária tem se comportado, já que existe desmatamento ilegal de áreas amazônicas para criação de terrenos voltados para agropecuária.
#importando dados referentes à ConsultasEmCsv/areagro.csv:
csvAg= pd.read_csv('ConsultasEmCsv/areaagro.csv')
csvAg.tail()
| ano | sigla_uf | area_total_plantada | |
|---|---|---|---|
| 670 | 2014 | TO | 4269 |
| 671 | 2015 | TO | 4209 |
| 672 | 2016 | TO | 4577 |
| 673 | 2017 | TO | 4083 |
| 674 | 2018 | TO | 13074 |
Acima estão dados de lavouras permanentes, também queremos dados de lavouras temporárias
csvAgt= pd.read_csv('ConsultasEmCsv/areaagrotemp.csv')
csvAgt = csvAgt.rename(columns = {'area_total_plantada': 'areaplantemp'})
csvAgt.head()
| ano | sigla_uf | areaplantemp | |
|---|---|---|---|
| 0 | 1994 | AC | 117045 |
| 1 | 1995 | AC | 107648 |
| 2 | 1996 | AC | 65915 |
| 3 | 1997 | AC | 68512 |
| 4 | 1998 | AC | 75309 |
Relacionando as duas tabelas acima para somar a área plantada de tanto lavouras permanentes quanto temporárias:
jag = csvAg.merge(csvAgt, how = 'inner', on = ['ano','sigla_uf'])
adb = jag.merge(csvCob,how = 'inner', on = ['ano','sigla_uf'])
adb.tail()
| ano | sigla_uf | area_total_plantada | areaplantemp | areatotal | |
|---|---|---|---|---|---|
| 220 | 2014 | TO | 4269 | 1034697 | 6869.580852 |
| 221 | 2015 | TO | 4209 | 1199494 | 6951.741695 |
| 222 | 2016 | TO | 4577 | 1227972 | 6592.706262 |
| 223 | 2017 | TO | 4083 | 1278462 | 6853.481358 |
| 224 | 2018 | TO | 13074 | 1348373 | 6645.391944 |
Somando áreas de lavouras temporárias e permanentes:
som = adb['area_total_plantada'] + adb[ 'areaplantemp']
adb["sumareaplant"] = som
adb.head()
| ano | sigla_uf | area_total_plantada | areaplantemp | areatotal | sumareaplant | |
|---|---|---|---|---|---|---|
| 0 | 1994 | AC | 8154 | 117045 | 154742.431297 | 125199 |
| 1 | 1995 | AC | 12265 | 107648 | 154298.809479 | 119913 |
| 2 | 1996 | AC | 7774 | 65915 | 153240.042606 | 73689 |
| 3 | 1997 | AC | 8201 | 68512 | 152588.674459 | 76713 |
| 4 | 1998 | AC | 7904 | 75309 | 152234.087485 | 83213 |
Como a área plantada está em hectares, precisamos converter para km²
adb[['sumareaplant']] = som * 0.01
adb.head()
| ano | sigla_uf | area_total_plantada | areaplantemp | areatotal | sumareaplant | |
|---|---|---|---|---|---|---|
| 0 | 1994 | AC | 8154 | 117045 | 154742.431297 | 1251.99 |
| 1 | 1995 | AC | 12265 | 107648 | 154298.809479 | 1199.13 |
| 2 | 1996 | AC | 7774 | 65915 | 153240.042606 | 736.89 |
| 3 | 1997 | AC | 8201 | 68512 | 152588.674459 | 767.13 |
| 4 | 1998 | AC | 7904 | 75309 | 152234.087485 | 832.13 |
Abaixo vamos modelar um novo dataframe para armazenar informações que queremos mostrar no gráfico
#ests armazena os estados presentes nos dados
ests = adb['sigla_uf'].unique()
#anos armazena os anos presentes nos dados
anos = adb['ano'].unique()
cdest = []
emdf = pd.DataFrame()
emdf["ano"] = anos
for i in ests:
string = "sigla_uf == '" + i + "'"
var = adb.query(string)['sumareaplant'].to_numpy()
emdf.insert(len(emdf.columns) , i , var)
emdf.head()
| ano | AC | AM | AP | MA | MT | PA | RO | RR | TO | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1994 | 1251.99 | 807.99 | 41.48 | 19719.09 | 29329.40 | 10513.09 | 8168.49 | 321.40 | 3032.24 |
| 1 | 1995 | 1199.13 | 812.32 | 54.28 | 20202.60 | 35262.39 | 11509.61 | 7513.37 | 378.62 | 3035.38 |
| 2 | 1996 | 736.89 | 1770.57 | 99.33 | 9935.86 | 32563.73 | 12341.82 | 4361.87 | 382.30 | 2235.17 |
| 3 | 1997 | 767.13 | 1818.11 | 111.25 | 10598.32 | 34033.00 | 11697.84 | 4513.31 | 396.13 | 2579.06 |
| 4 | 1998 | 832.13 | 2015.16 | 111.59 | 11612.94 | 39162.57 | 12218.08 | 4853.99 | 397.93 | 2879.28 |
Vamos mostrar como as áreas de lavouras se comportaram nos estados, se aumentaram ou diminuiram. Sabemos que o bioma da amazônia diminuiu.
Para lembrar do gráfico de linhas um pouco anteriormente no notebook, vamos plotá-lo novamente com todos os estados:
emdfb = pd.DataFrame()
emdfb["ano"] = anos
for i in ests:
string = "sigla_uf == '" + i + "'"
var = adb.query(string)['areatotal'].to_numpy()
emdfb[i] = var
emdfb.head()
| ano | AC | AM | AP | MA | MT | PA | RO | RR | TO | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1994 | 154742.431297 | 1.505151e+06 | 136805.989747 | 75481.156639 | 433299.150186 | 1.106713e+06 | 195376.592716 | 218306.035013 | 8569.075744 |
| 1 | 1995 | 154298.809479 | 1.506828e+06 | 136745.308710 | 74272.545092 | 429766.345561 | 1.097547e+06 | 191833.580550 | 218514.467052 | 7311.394573 |
| 2 | 1996 | 153240.042606 | 1.504383e+06 | 136724.179595 | 72223.250740 | 422290.605462 | 1.091378e+06 | 188182.214708 | 217783.942974 | 7543.892953 |
| 3 | 1997 | 152588.674459 | 1.503815e+06 | 136811.637492 | 72837.223173 | 412144.718601 | 1.084548e+06 | 186252.888139 | 218019.804184 | 6976.358418 |
| 4 | 1998 | 152234.087485 | 1.503607e+06 | 136775.430191 | 71104.771291 | 409861.953011 | 1.079994e+06 | 183489.029383 | 217316.767219 | 7107.274914 |
fig = px.line(emdfb, x='ano', y=ests,
title='Área total(km²) do bioma da amazônia por estados entre 1994 e 2018',
line_shape = 'spline')
fig.show()
Todas as linhas inclinadas ligeiramente para baixo, indicando a perda das áreas amazônicas e da biodiversidade
Vamos somar as áreas amazônicas de 1994 de todos os estados e comparar com a área total perdida.
areatot = csvCob.query('ano == 1994')['areatotal']
areaperd = deltadb['perdatot']
totperd = areaperd.sum()
atot = areatot.sum()
Calculando porcentagem de área perdida:
percent = totperd/atot
percent * 100
6.519217974461627
Vemos que a área total perdida da amazônia foi 6,5 %. É realmente muita cobertura vegetal perdida, um lamento.
Gráfico referente à pecuária:
fig = px.line(emdf, x='ano', y=ests,
title='Área total(km²) usada na agropecuária nesses estados entre 1994 e 2018',
line_shape = 'spline')
fig.show()
No gráfico, vemos que no Mato Grosso, que foi um dos estados que mais sofreu com a fronteira agrícola, as áreas de lavouras aumentaram muito.
Nos outros estados também aumentou, porém não foram mudanças tão significantes quanto no MT.
Fica claro a possibilidade do aumento das lavouras no Mato Grosso ter afetado as áreas referentes ao bioma Amazônia.
Aqui finalizamos a análise explorativa de dados referentes à área da amazônia, governos e lavouras nos 9 estados que possuem grandes áreas do bioma amazônia.